1
תגובות
היי חברה יש מספר שדות שאני צריך לבצע חיפוש אשמח לעזרה
טבלאה ראשית מחזיקה את כל העסקים שלי business
טבלאה של ערים Areas מחזיקה את כל הערים בארץ
טבלה שמקשרת בין 2 הטבלאות bus_Areas בעמצעות id
חפרתי את כל האינטרנט ועדיין לא מצאת הסבר איך אני מבצעה חיפוש בטבלאות
עשיתי משהו כזה וזה עדיין לא עובד
טבלאה ראשית מחזיקה את כל העסקים שלי business
טבלאה של ערים Areas מחזיקה את כל הערים בארץ
טבלה שמקשרת בין 2 הטבלאות bus_Areas בעמצעות id
חפרתי את כל האינטרנט ועדיין לא מצאת הסבר איך אני מבצעה חיפוש בטבלאות
עשיתי משהו כזה וזה עדיין לא עובד
$where = array();
if (isset($keyword))
{
$searchword = mysql_real_escape_string($keyword);
$where[] = "SELECT * FROM wp_ubusiness WHERE ub_name LIKE'%".$searchword."%' OR ub_desc LIKE'%".$searchword."%'" ;
}
if(isset($area))
{
$where[] = "wp_ubarea.bu_Areaid = $area";
}
if(isset($section))
{
$Section = mysql_real_escape_string($section);
$where[] = "surnameField LIKE '%".$surname."%'";
}
if(count($where))
{
$query = "SELECT * FROM wp_ubusiness
LEFT JOIN business_areas ON wp_ubusiness.ub_id = business_areas.bus_id
LEFT JOIN wp_ubarea ON wp_ubarea.bu_Areaid = business_areas.areas_id
LEFT JOIN business_sections ON business_sections.cbus_id = wp_ubusiness.ub_id
LEFT JOIN wp_ubsection ON wp_ubsection.ubsection_id = business_sections.section_id
WHERE ".implode(" AND ",$where);
}
else
{
$query = "SELECT * FROM wp_ubusiness
// LEFT JOIN business_areas ON wp_ubusiness.ub_id = business_areas.bus_id
// LEFT JOIN wp_ubarea ON wp_ubarea.bu_Areaid = business_areas.areas_id
// LEFT JOIN business_sections ON business_sections.cbus_id = wp_ubusiness.ub_id
// LEFT JOIN wp_ubsection ON wp_ubsection.ubsection_id = business_sections.section_id";
}
$result = $wpdb->get_results($query); // or die(mysql_error());
if (isset($keyword))
{
$searchword = mysql_real_escape_string($keyword);
$where[] = "SELECT * FROM wp_ubusiness WHERE ub_name LIKE'%".$searchword."%' OR ub_desc LIKE'%".$searchword."%'" ;
}
if(isset($area))
{
$where[] = "wp_ubarea.bu_Areaid = $area";
}
if(isset($section))
{
$Section = mysql_real_escape_string($section);
$where[] = "surnameField LIKE '%".$surname."%'";
}
if(count($where))
{
$query = "SELECT * FROM wp_ubusiness
LEFT JOIN business_areas ON wp_ubusiness.ub_id = business_areas.bus_id
LEFT JOIN wp_ubarea ON wp_ubarea.bu_Areaid = business_areas.areas_id
LEFT JOIN business_sections ON business_sections.cbus_id = wp_ubusiness.ub_id
LEFT JOIN wp_ubsection ON wp_ubsection.ubsection_id = business_sections.section_id
WHERE ".implode(" AND ",$where);
}
else
{
$query = "SELECT * FROM wp_ubusiness
// LEFT JOIN business_areas ON wp_ubusiness.ub_id = business_areas.bus_id
// LEFT JOIN wp_ubarea ON wp_ubarea.bu_Areaid = business_areas.areas_id
// LEFT JOIN business_sections ON business_sections.cbus_id = wp_ubusiness.ub_id
// LEFT JOIN wp_ubsection ON wp_ubsection.ubsection_id = business_sections.section_id";
}
$result = $wpdb->get_results($query); // or die(mysql_error());
1 תשובות
תנסח את השאלה שלך מחדש משום שלא ניתן להבין יותר מידי מההסבר שלך.
בעקרון חיפוש בטבלאות נעשה ע"י השימוש ב where ,הסבר קצת יותר מפורט אתה יכול למצוא כאן - http://www.w3schools.com/sql/sql_where.asp
בנוסף כדאי לציין שמאוד לא מומלץ לעשות כל כך הרבה join באותה שאילתה,מדובר בפעולה מאוד בזבזנית וכאשר מדובר בשימוש עם מספר טבלאות פי כמה וכמה.
לכן אני מציע לך לחשוב שוב על המבנה של המסד,האם ניתן לבנות אותו בצורה יותר יעילה כך שתחסוך חישובים מיותרים ?
במידה ולא,אני מציע לך לפחות לבצע מטמון על המידע על מנת למנוע עומס על המסד.